1 module android_entry;
2 
3 version(Android):
4 import app;
5 import hip.jni.helper.androidlog;
6 import hip.jni.jni;
7 import hip.jni.helper.jnicall;
8 ///Setups an Android Package for HipremeEngine
9 alias HipAndroid = javaGetPackage!("com.hipremeengine.app.HipremeEngine");
10 import hip.systems.input;
11 import hip.console.log;
12 
13 
14 export extern(C)
15 {
16     private __gshared bool _hasExecInit = false;
17     void Java_com_hipremeengine_app_HipremeEngine_HipremeInit(JNIEnv* env, jclass clazz)
18     {
19         if(!_hasExecInit)
20         {
21             _hasExecInit = true;
22             import hip.filesystem.systems.android;
23             HipremeInit();
24             JNISetEnv(env);
25             aaMgr = cast(AAssetManager*)HipAndroid.javaCall!(Object, "getAssetManager");
26             aaMgr = AAssetManager_fromJava(env, aaMgr);
27         }
28     }
29 
30     private __gshared bool _hasExecMain;
31     private __gshared int  _mainRet;
32     jint Java_com_hipremeengine_app_HipremeEngine_HipremeMain(JNIEnv* env, jclass clazz)
33     {
34         if(!_hasExecMain)
35         {
36             _hasExecMain = true;
37             int[2] wsize = HipAndroid.javaCall!(int[2], "getWindowSize");
38             _mainRet = HipremeMain(wsize[0], wsize[1]);
39         }
40         return _mainRet;
41     }
42     jboolean Java_com_hipremeengine_app_HipremeEngine_HipremeUpdate(JNIEnv* env, jclass clazz)
43     {
44         return HipremeUpdate();
45     }
46     void Java_com_hipremeengine_app_HipremeEngine_HipremeRender(JNIEnv* env, jclass clazz)
47     {
48         HipremeRender();
49     }
50 
51     void Java_com_hipremeengine_app_HipremeEngine_HipremeReinitialize(JNIEnv* env, jclass clazz)
52     {
53         import hip.hiprenderer.renderer;
54         HipRenderer.reinitialize();
55     }
56 
57     void  Java_com_hipremeengine_app_HipremeEngine_HipremeDestroy(JNIEnv* env, jclass clazz)
58     {
59         JNISetEnv(null);
60         HipremeDestroy();
61     }
62 }